package com.csx.micrometer.sentinel.constant;

/**
 * @author cuisongxu
 * @date 2023/1/19 10:20
 */
public interface SentinelMetricsConstant {

    String API = "api";

    /**
     * Sentinel 熔断模式
     */
    String SENTINEL_DEGRADE_MODEL= "sentinel_degrade_model";

    /**
     * 触发Sentinel 限流规则的请求次数
     */
    String SENTINEL_PARAM_FLOW_REQUEST_TOTAL = "sentinel_param_flow_requests_total";

    /**
     * 触发Sentinel 熔断规则的请求次数
     */
    String SENTINEL_DEGRADE_REQUEST_TOTAL = "sentinel_degrade_requests_total";

    /**
     * 触发Sentinel 限流/熔断规则的请求次数
     */
    String SENTINEL_BLOCK_REQUEST_TOTAL = "sentinel_block_requests_total";

    /**
     * 成功通过Sentinel规则的请求数量 + 被丢弃的请求数量
     */
    String SENTINEL_PASS_REQUEST_TOTAL = "sentinel_pass_requests_total";

    /**
     * 成功通过Sentinel规则的请求数量
     */
    String SENTINEL_SUCCESS_REQUEST_TOTAL = "sentinel_success_requests_total";

    /**
     * 所有请求数 (sentinel_pass_request_total + sentinel_block_requests_total)
     */
    String SENTINEL_REQUEST_TOTAL = "sentinel_requests_total";

    /**
     * 业务异常的请求数: 通过了Sentinel的规则，但是外调应用发生异常的请求的数量
     */
    String SENTINEL_EXCEPTION_REQUEST_TOTAL = "sentinel_exception_requests_total";

    /**
     * 业务超时请求数: 通过了Sentinel的规则，但是外调应用发生超时的请求的数量
     */
    String SENTINEL_TIMEOUT_REQUEST_TOTAL = "sentinel_timeout_requests_total";

    /**
     * 业务的并发线程数: 当前处理业务的线程数
     */
    String SENTINEL_CURRENT_THREAD_NUMBER = "sentinel_current_thread_number";

    /**
     * 外调的响应时间
     */
    String SENTINEL_INVOKE_RESPONSE_TIME = "sentinel_invoke_response_time";

    /**
     * 熔断状态
     * <p> open: 0 表示熔断开启,拒绝所有请求
     * <p> half open: 1 表示熔断半开，会接收一个请求，如果请求通过则熔断关闭，负责熔断打开
     * <p> closed: 2 表示熔断关闭。
     */
    String SENTINEL_DEGRADE_STATE = "sentinel_degrade_state";
}
